/*
 * Copyright (c) 20202099 the original author or authors. All rights reserve.
 */
package org.tianyun.cloud.security.server;

import reactor.core.publisher.Mono;

/**
 * 过滤器链，内部是一组SecurityFilter集合，集合中的所有SecurityFilter依次往下传递，在执行过程中，如其中一个SecurityFilter没有返回往下传递标记，则后面的SecurityFilter将不会被执行
 *
 * @auther ebert_chan
 */
public interface SecurityFilterChain<T, U> {

    /**
     * 过滤器链的过滤器开始依次执行
     *
     * @param exchange
     * @auther ebert_chan
     */
    Mono<Void> doFilter(SecurityWebExchange<T, U> exchange);

}
